This disclosure relates to systems and methods for streaming media content, and more particularly, this disclosure relates to systems and methods for resiliently streaming media from a server to a mobile computing device over a wireless network.
Mobile applications that employ wireless networks for connecting with one or more server entities face multiple challenges. For example, the underlying wireless transport network is likely to fail more often than when connecting over wired networks, and thus the assumption that network connections will remain connected most of the time is generally not true for mobile applications. As a result, applications designed with such assumptions (such as traditional software applications) do not yield a good quality of experience for end users running applications on mobile devices.
While smartphones are often equipped with platforms that support advanced application programming interfaces (APIs) for streaming media content, some mobile devices and embedded systems, such as feature phones, are often provided with relatively simple APIs that are restricted in functionality. In particular, many mobile devices are designed to operate on the Java Micro Edition (Java ME or J2ME) Platform and the entry level Symbian platform, which often restricts media streaming applications to applications that require a continuous connection between the computing device and a remote server.
Such devices (and many server applications such as web services, video streaming servers, and file transfer protocol FTP servers) are session based, and are not designed for mobile client applications that may get disconnected during a data or media streaming session. A disconnection typically requires the client application to start afresh, which is highly undesirable from a user perspective, particularly when streaming media content.
Media content may be streamed to a mobile client using the Real Time Streaming Protocol (RTSP), which is often supported by feature phones operating on the J2ME platform and most smart phones. RTSP is an application-level protocol for control over the delivery of data with real-time properties. RTSP provides an extensible framework to enable controlled, on-demand delivery of real-time data, such as audio and video. Sources of data can include both live data feeds and stored data such as media files. This protocol is intended to control multiple data delivery sessions, provide a means for choosing delivery channels such as User Datagram Protocol (UDP), multicast UDP) and Transport Control Protocol (TCP), and provide a means for choosing delivery mechanisms based upon various streaming protocols, such as RTP (as defined in RFC 1889). This protocol requires a steady network connection between the client and the server. Network disconnections can prematurely interrupt and stop a media session, resulting in a poor quality of experience for the user. Therefore, while some solutions exist for streaming media to mobile devices with moderate computing power such as feature phones, or to smart phones under low-speed network conditions, the session-based nature of the existing streaming solutions often leads to poor playback and user experience.